#更新令牌
import time
def update_token(conn,token,user,item=None):
    timestamp=time.time() #h获取当前时间戳
    conn.hset('login:',token,user) #维持令牌与已登陆用户之间的映射
    conn.zadd('recent:',token,timestamp) #记录领哦哎最后一次出现的时间
    if item:
        conn.zadd('viewed:'+token,item,timestamp) #记录用户浏览郭的商品
        conn.zremrangebyrank('viewed:'+token,0,-26) #移除旧的记录，值保留用户最近浏览过的25个商品
        #新增下面一行代码
        conn.zincrby('viewed:',item,-1)



def rescale_viewed(conn):
    while not QUIT:
        #删除所有排名在20 000名之后的商品
        conn.zremrangebyrank('viewed:',0,-20001)
        #将浏览次数降低为原来的一半
        conn.zinterstore('viewed:',{'viewed:':.5})
        #5分钟之后再次执行该操作
        time.sleep(300)


#判断页面是否需要被缓存
def can_cache(conn,request):
    #尝试从页面里面取出商品ID
    item_id=extract_item_id(request)
    #检查这个页面能否额比缓存以及这个页面是否为商品页面
    if not item_id or is_dynamic(request):
        return False
    #取得商品的浏览次数排名
    rank=conn.zrank('viewed:',item_id)
    #根据商品的浏览次数排名来判断是否需要缓存这个页面
    return rank is not None and rank<10000